# CMC (Complex Modules Clock)

**Complex Modules Clock** (Комплекс модулей часов) — это консольное приложение на языке C, которое предоставляет несколько способов отображения текущего времени и даты в терминале. Проект поддерживает статический вывод, динамически обновляемый текстовый таймер и псевдографические часы с различными шрифтами (3x3, 5x5, 8x8). Приложение модульное, что позволяет легко расширять его функциональность.

## Возможности

- Статический вывод текущей даты и времени в формате `ГГГГ/ВремяГода/Месяц | День/ДеньНедели | ЧЧ:ММ:СС`.
- Динамически обновляемый текстовый таймер, показывающий время с частотой раз в секунду.
- Псевдографические часы с тремя шрифтами:
  - 3x3 (аргумент `m3`)
  - 5x5 (аргумент `m5`)
  - 8x8 (аргумент `m7`)
- Обработка SIGINT (Ctrl+C) для корректного завершения.
- Модульная архитектура для упрощения добавления новых функций.
- Поддержка ANSI-кодов для цветного и форматированного вывода.

## Установка

Для сборки и запуска проекта требуется компилятор GCC и утилита `make`, доступные на большинстве Unix-подобных систем (Linux, macOS). На Windows можно использовать WSL или MinGW.

1. **Клонируйте репозиторий** (если проект размещён на GitHub):
   ```bash
   git clone <URL_репозитория>
   cd complex-modules-clock
   ```

2. **Соберите проект** с помощью `Makefile`:
   ```bash
   make
   ```

   Это создаст исполняемый файл `complex_modules_clock`.

3. **Проверьте зависимости**:
   - Требуется стандартная библиотека C и заголовочные файлы (`stdio.h`, `time.h`, `unistd.h`, `signal.h`, `stdlib.h`).
   - Никаких внешних библиотек не требуется.

## Использование

Запустите программу с одним из поддерживаемых аргументов:

```bash
./complex_modules_clock <аргумент>
```

### Доступные аргументы
Look at the  [`HELP`](HELP)

### Examples

- Показать справку:
  ```bash
  ./complex_modules_clock mh
  ```

- Вывести текущую дату и время:
  ```bash
  ./complex_modules_clock ms
  ```
  Пример вывода:
  ```
      2025/Winter/January | 7/Tuesday | 13:21:45
  ```

- Запустить псевдографические часы (5x5):
  ```bash
  ./complex_modules_clock m5
  ```

> **Примечание**: Для корректного отображения псевдографики используйте терминал с поддержкой UTF-8 (например, большинство современных терминалов Linux/macOS).

> **Внимание**: Нажмите `Ctrl+C`, чтобы завершить выполнение программы. Курсор будет восстановлен, а экран очищен.

## Структура проекта

- **`complex_modules_clock.c`**: Основной файл, который обрабатывает аргументы и вызывает модули.
- **`module_*.c`**: Модули, реализующие различные режимы работы:
  - `module_00.c`: Справочное сообщение (`mh`).
  - `module_01.c`: Статический вывод времени (`ms`).
  - `module_02.c`: Динамический текстовый таймер (`mu`).
  - `module_03.c`: Псевдографические часы 3x3 (`m3`).
  - `module_05.c`: Псевдографические часы 5x5 (`m5`).
  - `module_07.c`: Псевдографические часы 8x8 (`m7`).
- **`common.c`, `common.h`**: Функции для получения времени года, месяца и дня недели.
- **`pseudographic_font_*.h`**: Определения псевдографических шрифтов (3x3, 5x5, 8x8).
- **`clock_*.c`**: Отдельные реализации часов (возможно, прототипы).
- **`Makefile`**: Скрипт для сборки проекта.

## Дополнительные детали проекта
- Каждому модулю соответствует аналог и отдельно компелируемая программа.
| Модуль        | Аналог |
|---------------|----------|
| `module_00.c` | HELP |
| `module_01.c` | clock_sr.c |
| `module_02.c` | clock_up.c |
| `module_03.c` | clock_pg3.c |
| `module_05.c` | clock_pg5.c |
| `module_07.c` | clock_pg7.c |

## Total number of lines in the project:
``` 1020```

## License
Этот проект распространяется под лицензией **MIT**.
См. файл [`LICENSE`](LICENSE) для подробностей.
(если файл отсутствует, уточните у автора проекта).

**Примечание**: Если вы используете эту программу в своем проекте, буду благодарен, если укажите авторство.

## Author
- **Grannik**

## Contacts:
- **Сайт**: [Grannik](https://grannik.neocities.org/)

## Repositories:
- **asciinema**     [CMC](https://asciinema.org/a/718357)
- **Codeberg**:     [CMC](https://codeberg.org/Grannik/CMC)
- **GitHub**:       [CMC](https://github.com/Grannik/CMC)
- **GitLab**:       [CMC](https://gitlab.com/grannik/cmc)
- **SourceForge**:  [CMC](https://sourceforge.net/p/cmc/code/ci/master/tree/)
- **Gitea (Demo)**: [CMC](https://demo.gitea.com/Grannik/CMC)
- **Gogs (Demo)**:  [CMC]()

*Создано с ❤️ для любителей консольных приложений.*
